.TH REDO_PREBINDING 1 "March 29, 2004" "Apple Computer, Inc."
.SH NAME
redo_prebinding \- redo the prebinding of an executable or dynamic library
.SH SYNOPSIS
redo_prebinding [\-c | \-p | \-d] [\-i] [\-z] [\-u] [\-r rootdir] [\-e executable_path] [-seg_addr_table table_file_name] [-seg_addr_table_filename pathname] [-seg1addr address] [\-o output_file] [\-s] input_file
.SH DESCRIPTION
.I Redo_prebinding
is used to redo the prebinding of an executable or dynamic library when one
of the dependent dynamic libraries changes.
The input file, executable or dynamic library, must have initially been prebound
for this program to redo the prebinding.
Also all depended libraries must have their prebinding up to date.  So when
redoing the prebinding for libraries they must be done in dependency order.
Also when building executables or dynamic libraries that are to be prebound
(with the -prebind options to
.IR ld (1)
or
.IR libtool (1))
the dependent libraries must have their prebinding up to date or the result will
not be prebound.
.PP
The options allow for different types of checking for use in shell scripts.
Only one of \-c, \-p or \-d can be used at a time.
If
.I redo_prebinding
redoes the prebinding on an input file it will run /usr/bin/objcunique if it
exists on the result.
.SH OPTIONS
.TP
.B \-c
only check if the file needs to have it's prebinding redone and return status.
A 0 exit means the file's prebinding is up to date, 1 means it needs to be
redone and 2 means it could not be checked for reasons like a dependent library
is missing (an error message is printed in these cases).
.TP
.B \-p
check only for prebound files and return status.
An exit status of 1 means the file is a Mach-O that could have been prebound
and is not otherwise the exit status is 0.
.TP
.B \-d
check only for dynamic shared library files and return status.
An exit status of 0 means the file is a dynamic shared library,
1 means the file is not, 2 means there is some mix in the architectures.
.TP
.B \-i
ignore non-prebound files (useful when running on all types of files).
.TP
.B \-z
zero out the prebind check sum in the output if it has one.
.TP
.B \-u
unprebind, rather than reprebind (-c, -p, -d, -e ignored).
Resets or removes prebinding-specific information from the input file.
As unprebinding is intended to produce a canonical Mach-O
binary, bundles and non-prebound executables and dylibs are acceptable
as input.  For these files, the  unprebind operation will zero library time
stamps and version numbers and zero entries in the two-level hints
table.
.TP
.BI "\-e " executable_path
replace any dependent library's "@executable_path" prefix with the
.I executable_path
argument.
.TP
.BI "\-seg_addr_table " table_file_name
The
.I -seg_addr_table
option is used when the input a dynamic library and if specified the table
entry for the install_name of the dynamic library is used for checking and the
address to relocate the library to as it prefered address.
.TP
.BI "\-seg_addr_table_filename" " pathname"
Use
.B pathname
instead of the install name of the library for matching an entry in the segment
address table.
.TP
.BI "\-seg1addr " address
Move the input library to base address
.B address.
This option does not apply when
.B \-u,
.B \-seg_addr_table
or
.B \-seg_addr_table_filename
are specified.
.TP
.BI "\-r " rootdir
prepend the
.I rootdir
argument to all dependent libraries.
.TP
.BI "\-o " output_file
write the updated file into
.I output_file
rather than back into the input file.
.TP
.BI \-s
write the updated file to standard output
.SH DIAGNOSTICS
With no \-c, \-p or \-d an exit status of 0 means success and 2 means it could
not be done for reasons like a dependent library is missing (an error message
is printed in these cases).
And exit of 3 is for the specific case when the dependent libraries are out of
date with respect to each other.
